//
//  WBStatusViewModel.swift
//  sinaWeibo
//
//  Created by 吴熠 on 16/11/16.
//  Copyright © 2016年 吴熠. All rights reserved.
//
//微博cell的视图模型,用来处理cell显示的数据
import UIKit

class WBStatusViewModel: NSObject {
    
//    var wbUser = WBUser()
    
    //记录用户头像地址的URL
    var iconURL : URL?
    
    var verifitedImage: UIImage?
    
    var mbRankImage: UIImage?
    
    var sourceText : String?
    
    var timeText: String?{
        
        //1.实例化日期格式对象
        let dateFormater = DateFormatter()
        //2.指定格式化字符
        dateFormater.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy"
        //在真机上必须设置本地化信息否则转换失败
        dateFormater.locale = Locale(identifier: "en")
        //3.将字符串转换为日期对象
        guard let sinaDate = dateFormater.date(from: status?.created_at ?? "") else {
            return "❌❎"
        }
        //4.处理日期
        let calendar = Calendar.current
        let currentDate = Date()
        let result = calendar.dateComponents([.day,.year], from: sinaDate, to: currentDate)
        
        //进行判断
        //等于0表示今年的
        if result.year == 0{
            //在判断是不是今天的哦
            if calendar.isDateInToday(sinaDate){
                //获取当前时间和服务器传来的微博的时间的秒的差值
                let delta = currentDate.timeIntervalSince(sinaDate)
                //如果差值小于60,就是刚刚
                if delta<60 {
                    return "刚刚"
                }else if delta<3600{
                    return "\(Int(delta/60))分钟前"
                }else{
                    return "\(Int(delta / 3600))小时前"
                }
            }else if calendar.isDateInYesterday(sinaDate){
                //昨天 HH:mm
                dateFormater.dateFormat = "昨天 HH:mm"
                return dateFormater.string(from: sinaDate)
            }else{
                //其他的直接输出MM-dd HH:mm
                dateFormater.dateFormat = "MM-dd HH:mm"
                return dateFormater.string(from: sinaDate)
            }
        }else{
            //不是当年
            dateFormater.dateFormat = "yyyy-MM-dd HH:mm"
            return dateFormater.string(from: sinaDate)
        }

        
    }
    
    
    //根据是否有retweeted_status判断返回什么类型的微博的pic_urls
    var imgUrls : [WBPictureInfo]? {
            if status?.retweeted_status == nil {
                //原创微博的图片
                return status?.pic_urls
            }
        //转发微博的图片url
        return status?.retweeted_status?.pic_urls
    }
    
    //引用cell模型
    var status : WBStatus?{
        didSet{
            iconURL = URL(string: status?.user?.avatar_large ?? "")
            //处理微博认证的图片
            self.dealWithWeiboVerifitedImage()
            //处理用户等级图片
            self.dealWithWeiboRankImage()
            //处理微博来源
             self.sourceText = self.dealWithWeiboSource(source: status?.source ?? "")
        }
    }
    
//    //处理微博日期
//    private func dealWithWeiboTime(str : String) -> (String){
//        //Sat Nov 19 11:28:03 +0800 2016假数据测试时间
//        //1.实例化日期格式对象
//        let dateFormater = DateFormatter()
//        //2.指定格式化字符
//        dateFormater.dateFormat = "EEE MMM dd HH:mm:ss Z yyyy"
//        //在真机上必须设置本地化信息否则转换失败
//        dateFormater.locale = Locale(identifier: "en")
//        //3.将字符串转换为日期对象
//        guard let sinaDate = dateFormater.date(from: status?.created_at ?? "") else {
//            return "❌❎"
//        }
//        //4.处理日期
//        let calendar = Calendar.current
//        let currentDate = Date()
//        let result = calendar.dateComponents([.day,.year], from: sinaDate, to: currentDate)
//        
//        //进行判断
//        //等于0表示今年的
//        if result.year == 0{
//            //在判断是不是今天的哦
//            if calendar.isDateInToday(sinaDate){
//                //获取当前时间和服务器传来的微博的时间的秒的差值
//                let delta = currentDate.timeIntervalSince(sinaDate)
//                //如果差值小于60,就是刚刚
//                if delta<60 {
//                    return "刚刚"
//                }else if delta<3600{
//                    return "\(Int(delta/60))分钟前"
//                }else{
//                    return "\(Int(delta / 3600))小时前"
//                }
//            }else if calendar.isDateInYesterday(sinaDate){
//                //昨天 HH:mm
//                dateFormater.dateFormat = "昨天 HH:mm"
//                return dateFormater.string(from: sinaDate)
//            }else{
//                //其他的直接输出MM-dd HH:mm
//                dateFormater.dateFormat = "MM-dd HH:mm"
//                return dateFormater.string(from: sinaDate)
//            }
//        }else{
//            //不是当年
//            dateFormater.dateFormat = "yyyy-MM-dd HH:mm"
//            return dateFormater.string(from: sinaDate)
//        }
//        
//        
//    }
    
    //处理微博来源
    private func dealWithWeiboSource(source : String) -> String {
        //<a href=\"http://app.weibo.com/t/feed/6vtZb0\" rel=\"nofollow\">iPhone 6s 土豪金</a>
        //截取字符串并返回
        let startFlag = "\">"
        let endFlag = "</a>"
        guard    let startRange = source.range(of: startFlag),
            let endRange = source.range(of: endFlag) else{
                return "未知来源"
        }
        //最大边界,最小边界
        let range = startRange.upperBound..<endRange.lowerBound
        //截取
        let subStr = source.substring(with: range)
        return subStr
    }
    
    
    
    //处理数据相关的业务逻辑 处理微博日期,微博来源
    //处理用户等级
    private func dealWithWeiboRankImage(){
        let mbrank = status?.user?.mbrank ?? 0
        if mbrank>0 && mbrank<7{
            //赋值
            mbRankImage = UIImage(named: "common_icon_membership_level\(mbrank)")
        }
    }
    
    private func dealWithWeiboVerifitedImage(){
        //根据type的值进行不同的认证
        let type = status?.user?.verified_type ?? -1
        switch type {
        case 0:
            verifitedImage = #imageLiteral(resourceName: "avatar_vip")
        case 2,3,5:
            verifitedImage = #imageLiteral(resourceName: "avatar_enterprise_vip")
        case 220:
            verifitedImage = #imageLiteral(resourceName: "avatar_grassroot")
        default:
            //没有认证
            verifitedImage = nil
        }
    }
    
}
